(defmacro defined [& var]
    `(try 
        (or 
            (boolean (resolve ~@var)) 
            (not (nil? (eval ~@var)))
        ) (catch Exception e# false)
    )
)

(println "getFloat")
(if (defined 'getFloat)
	(throw (Exception. "getFloat already defined!"))
)
(def getFloat putFloat)
(def getFloatType (class getFloat))
(println getFloatType)
(println getFloat)
(if-not (= getFloatType Float)
	(throw (Exception. "getFloat not Float!"))
)

(println "getFloatVector")
(if (defined 'getFloatVector)
	(throw (Exception. "getFloatVector already defined!"))
)
(def getFloatVector putFloatVector)
(def getFloatVectorType (class (get getFloatVector 0)))
(println getFloatVectorType)
(println getFloatVector)
(if-not (= getFloatVectorType Float)
	(throw (Exception. "getFloatVector not Float!"))
)

(println "getFloatVectorAsList")
(if (defined 'getFloatVectorAsList)
	(throw (Exception. "getFloatVectorAsList already defined!"))
)
(def getFloatVectorAsList putFloatVectorAsList)
(def getFloatVectorAsListType (class (get getFloatVectorAsList 0)))
(println getFloatVectorAsListType)
(println getFloatVectorAsList)
(if-not (= getFloatVectorAsListType Float)
	(throw (Exception. "getFloatVectorAsList not Float!"))
)

(println "getFloatMatrix")
(if (defined 'getFloatMatrix)
	(throw (Exception. "getFloatMatrix already defined!"))
)
(def getFloatMatrix putFloatMatrix)
(def getFloatMatrixType (class (get (get getFloatMatrix 0) 0)))
(println getFloatMatrixType)
(println getFloatMatrix)
(if-not (= getFloatMatrixType Float)
	(throw (Exception. "getFloatMatrix not Float!"))
)

(println "getFloatMatrixAsList")
(if (defined 'getFloatMatrixAsList)
	(throw (Exception. "getFloatMatrixAsList already defined!"))
)
(def getFloatMatrixAsList putFloatMatrixAsList)
(def getFloatMatrixAsListType (class (get (get getFloatMatrixAsList 0) 0)))
(println getFloatMatrixAsListType)
(println getFloatMatrixAsList)
(if-not (= getFloatMatrixAsListType Float)
	(throw (Exception. "getFloatMatrixAsList not Float!"))
)
